#include "clickedlabel.h"

ClickedLabel::ClickedLabel(QWidget*parent):QLabel(parent){}

void ClickedLabel::mousePressEvent(QMouseEvent*e)
{
    QLabel::mousePressEvent(e);
    emit ClickedLabel::clicked(text());
}

void SmallPrintLabel::setText(const QString&text,qint32 smallprint)
{
    realnum=smallprint;
    realtext=text;
    double num;
    QString numstr;
    if(smallprint>10000)
    {
        num=1.0*smallprint/10000;
        numstr=QString::number(num,'f',2)+"万";
    }
    else if(smallprint>100000000)
    {
        num=1.0*smallprint/100000000;
        numstr=QString::number(num,'f',2)+"亿";
    }
    else
        numstr=QString::number(smallprint);
    QString newtext=QString(  "<span >%1"
                              "<sup style='font-size: 12pt;'>%2</sup>"
                              "</span>").arg(text).arg(numstr);
    QLabel::setText(newtext);
}

void SmallPrintLabel::setText(qint32 smallprint)
{
    realnum=smallprint;
    setText(text(),smallprint);
}

void SmallPrintLabel::setText(const QString&text)
{
    realtext=text;
    QString newtext=QString(  "<span >%1"
                              "</span>").arg(text);
    QLabel::setText(newtext);
}

void SmallPrintLabel::paintEvent(QPaintEvent*e)
{
    QLabel::paintEvent(e);  // 先绘制文本
    if(flag)
    {
        QPainter painter(this);
        painter.setRenderHint(QPainter::Antialiasing);

        QPen pen;
        pen.setColor(QColor("#ea3e3e"));
        pen.setWidth(3);
        painter.setPen(pen);

        // 画一条水平线，位置在 QLabel 底部
        QRect fontrect = QFontMetrics(font()).boundingRect(realtext);
        int lineY = height() - 3;  // 设置线条的位置在 QLabel 底部
        int lineX = (fontrect.width()+10)>>2;
        painter.drawLine(lineX, lineY, (fontrect.width()+10)>>1, lineY);  // 从左到右绘制一条线
    }
    else
    {
        QPainter painter(this);
        painter.setRenderHint(QPainter::Antialiasing);

        QPen pen;
        pen.setColor(QColor("#f7f9fc"));
        pen.setWidth(3);
        painter.setPen(pen);

        // 画一条水平线，位置在 QLabel 底部
        int lineY = height() - 3;  // 设置线条的位置在 QLabel 底部
        painter.drawLine(30, lineY, width()-30, lineY);  // 从左到右绘制一条线
    }
}

void SmallPrintLabel::SetFlag(bool f)
{
    flag=f;
    if(f)
        setStyleSheet("color:black");
    else
        setStyleSheet("color:grey");
    update();
}
